
struct sum
{
  struct _
  {
    template< class x, class=void>
    struct app
    {
      struct _
      {
	template<class y, class=void>
	struct app
	{
	  struct _:  pAdd::_::template app<x >::_::
		      template app<y >::_
	  {
	  typedef typename pAdd::_::template app<x >::_::
		     template app<y >::_::value value;
	  };
	};
      };
    };
  };
};


struct mainfunction
{
  struct _:  sum::_::app<Int<1>  >::_::app<Int<2>  >::_
  {
   typedef sum::_::app<Int<1>  >::_::app<Int<2>  >::_::value value;
  };
};
